/*
Q:Go语言的垃圾回收是如何工作的
A:Go语言中的垃圾回收器(Garbage Collector)是自动管理内存的机器，用于回收不再使用的内存，垃圾回收器会自动检测不再使用的对象，并释放其占用的内存空间
*/

package main

import (
	"fmt"
	"runtime"
	"time"
)

func CreateObjects() {
	for i := 0; i < 10000000; i++ {
		_ = make([]byte, 1024)
	}
}

func main() {
	CreateObjects()
	time.Sleep(time.Second) // 等待垃圾回收器执行

	var stats runtime.MemStats
	runtime.ReadMemStats(&stats)
	fmt.Println("second Allocated memory:", stats.Alloc)
}

/*
在上述代码中，我们通过循环创建了大量的临时对象。
然后，我们使用time.Sleep函数等待垃圾回收器执行。
最后，我们使用runtime.ReadMemStats函数读取内存统计信息，并打印出已分配的内存大小。

通过使用垃圾回收器，我们可以自动管理内存，避免手动释放不再使用的对象。
垃圾回收器会在适当的时机自动回收不再使用的内存，从而提高程序的性能和可靠性。
*/
